/*
 * Copyright (c) 2017. 杭州端点网络科技有限公司.  All rights reserved.
 */

package com.jiantong.user.service;

import com.google.common.base.Optional;
import com.jiantong.user.dto.OrganizationSuggestion;
import com.jiantong.user.enums.OrganizationType;
import com.jiantong.user.model.Organization;
import io.terminus.common.model.Response;

import java.util.List;
import java.util.Map;

/**
 * @author : panxin
 */
public interface OrganizationReadService {

    /**
     * 根据ID查询组织结构信息
     *
     * @param id id
     * @return 信息
     */
    Response<Organization> findById(Long id);

    /**
     * 根据ID查询组织结构信息
     *
     * @param id id
     * @return 信息
     */
    Response<Optional<Organization>> findOptionalById(Long id);

    /**
     * 根据ID和类型查询组织结构信息, 返回对应类型的具体信息
     *
     * @param id   id
     * @param type 机构类型(政府、养殖场、屠宰场)
     * @return 信息
     */
    Response<? extends Organization> findByIdAndType(Long id, OrganizationType type);

    /**
     * suggestion
     *
     * @param name 名称
     * @param type 类型
     * @return 列表
     */
    Response<List<OrganizationSuggestion>> suggestByNameAndType(String name, OrganizationType type);

    Response<List<Organization>> selectList(Map criteria);

}
